
package modelos;

import java.sql.SQLException;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;
import main.ConectarBaseDatos;


public class modelo_ordenes {
    String id_pro,nombre,id_ord,id_prod_ord;
    float total;
    int cantidad;
    ConectarBaseDatos con = new ConectarBaseDatos();

    public int getCantidad() {
        return cantidad;
    }

    public void setCantidad(int cantidad) {
        this.cantidad = cantidad;
    }

    public ConectarBaseDatos getCon() {
        return con;
    }

    public void setCon(ConectarBaseDatos con) {
        this.con = con;
    }

    public String getId_ord() {
        return id_ord;
    }

    public void setId_ord(String id_ord) {
        this.id_ord = id_ord;
    }

    public String getId_pro() {
        return id_pro;
    }

    public void setId_pro(String id_pro) {
        this.id_pro = id_pro;
    }

    public String getId_prod_ord() {
        return id_prod_ord;
    }

    public void setId_prod_ord(String id_prod_ord) {
        this.id_prod_ord = id_prod_ord;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public float getTotal() {
        return total;
    }

    public void setTotal(float total) {
        this.total = total;
    }


    public boolean insertar(String nombre,float total,LinkedList<modelo_producto> linfo_productos,LinkedList<modelo_ingrediente> linfo_ingredientes)
    {
            String sqlcodigo = "SELECT COUNT(DISTINCT id_ord) FROM torden";
             int id_ordq=0;
              try {
                con.conectar();
                con.exec(sqlcodigo);
                 while (con.rs.next()) {
                    id_ordq =con.rs.getInt(1)+1;
                 }

                 } catch (SQLException ex) {
                    Logger.getLogger(modelo_ordenes.class.getName()).log(Level.SEVERE, null, ex);

                 }

                 id_ord= String.valueOf(id_ordq);
                 con.conectar();
                 String sql = " insert into torden (id_ord,nombre,total) values ('"+id_ord+"','"+nombre+"',"+total+")";
                 con.exec(sql);
                 con.desconectar();

                for (Iterator<modelo_ingrediente> it = linfo_ingredientes.iterator(); it.hasNext();) {
                    int r=0;
                    modelo_ingrediente info_ingrediente = it.next();
                    String sqlcodigo2 = "SELECT COUNT(DISTINCT id_prod_ord) FROM t_prod_ord";
                    int id_prod_ordq=0;
                    try {
                    con.conectar();
                    con.exec(sqlcodigo2);
                    while (con.rs.next()) {
                        id_prod_ordq =con.rs.getInt(1)+1;
                    }

                    } catch (SQLException ex) {
                    Logger.getLogger(modelo_ordenes.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    id_prod_ord= String.valueOf(id_prod_ordq);
                    con.conectar();
                    String sql2= "insert into t_prod_ord(id_prod_ord,cantidad,id_pro,id_ord) values ('"+id_prod_ord+"',"+info_ingrediente.getCantidad()+",'"+linfo_productos.get(r).id+"','"+id_ord+"')";
                    System.out.println(sql2);
                    con.exec(sql2);
                    con.desconectar();
                    r++;
                }
            return true;
    }



    public LinkedList<modelo_ordenes> get_info(){
    LinkedList<modelo_ordenes> linfo_ordenes = new LinkedList<modelo_ordenes>();
    String sql="select * from torden";
    con.conectar();
    con.exec(sql);
    try{
        while (con.rs.next()){
            modelo_ordenes  m_ordenes = new modelo_ordenes();
            m_ordenes.setId_ord(con.rs.getString("id_orden"));
            m_ordenes.setNombre(con.rs.getString("nombre"));
            m_ordenes.setTotal(con.rs.getInt("total"));
            linfo_ordenes.add(m_ordenes);
         }
    } catch (SQLException ex) {
        Logger.getLogger(modelo_ordenes.class.getName()).log(Level.SEVERE, null, ex);
    }
    return linfo_ordenes;
    }

    public LinkedList<modelo_consultas> reporte(){
    LinkedList<modelo_consultas> linfo_ordenes = new LinkedList<modelo_consultas>();
    String sql="SELECT id_pro,nombre,listado_productos.cantidad_productos,(precio*listado_productos.cantidad_productos) as precio_productos  FROM tproducto, (SELECT sum(t_prod_ord.cantidad) as cantidad_productos,t_prod_ord.id_pro AS codigo_productos FROM t_prod_ord GROUP BY t_prod_ord.id_pro) listado_productos WHERE listado_productos.codigo_productos=id_pro";
    con.conectar();
    con.exec(sql);
    try{
        while (con.rs.next()){
            modelo_consultas  info_consulta = new modelo_consultas();
            info_consulta.setCantidad(Float.parseFloat(con.rs.getString("cantidad_productos")));
            info_consulta.setNombre(con.rs.getString("nombre"));
            info_consulta.setPrecio(Float.parseFloat(con.rs.getString("precio_productos")));
            linfo_ordenes.add(info_consulta);
         }
    } catch (SQLException ex) {
        Logger.getLogger(modelo_consultas.class.getName()).log(Level.SEVERE, null, ex);
    }
    return linfo_ordenes;
    }



}
